package br.com.equus.entidade;

import static javax.persistence.GenerationType.IDENTITY;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.hibernate.envers.Audited;

import br.com.arquitetura.entidade.Entidade;

@Entity
@Table(name = "EQ_ITEM_ENTRADA", catalog = "EQUUS")
@Audited
public class ItemEntrada extends Entidade<Integer> {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "ID_ITEM_ENTRADA", unique = true, nullable = false)
	private Integer id;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_PRODUTO", referencedColumnName = "ID_PRODUTO", nullable = false)
	private Produto produto;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_ENTRADA", referencedColumnName = "ID_ENTRADA", nullable = false)
	private Entrada entrada;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_MARCA", referencedColumnName = "ID_MARCA", nullable = false)
	private Marca marca;

	@Column(name = "QTD_ITEM", nullable = false)
	private Double quantidade;

	@Column(name = "VLR_ITEM", nullable = false)
	private Double valor;

	@Column(name = "QTD_PORCETAGEM_LUCRO", nullable = false)
	private Double porcetagemLucro;

	@Column(name = "VLR_FINAL_ITEM", nullable = false)
	private Double valorFinal;

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "DT_VALIDADE", nullable = false)
	private Date dtValidade;

	@Transient
	private String quantidadeToString;

	@Transient
	private String valorToString;

	@Transient
	private String porcetagemLucroToString;

	@Transient
	private String valorFinalToString;

	public ItemEntrada() {
		// TODO Auto-generated constructor stub
	}

	public ItemEntrada(Integer id) {
		this.id = id;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public Entrada getEntrada() {
		return entrada;
	}

	public void setEntrada(Entrada entrada) {
		this.entrada = entrada;
	}

	public Marca getMarca() {
		return marca;
	}

	public void setMarca(Marca marca) {
		this.marca = marca;
	}

	public Double getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(Double quantidade) {
		this.quantidade = quantidade;
	}

	public Double getValor() {
		return valor;
	}

	public void setValor(Double valor) {
		this.valor = valor;
	}

	public Double getPorcetagemLucro() {
		return porcetagemLucro;
	}

	public void setPorcetagemLucro(Double porcetagemLucro) {
		this.porcetagemLucro = porcetagemLucro;
	}

	public Double getValorFinal() {
		return valorFinal;
	}

	public void setValorFinal(Double valorFinal) {
		this.valorFinal = valorFinal;
	}

	public Date getDtValidade() {
		return dtValidade;
	}

	public void setDtValidade(Date dtValidade) {
		this.dtValidade = dtValidade;
	}

	public String getQuantidadeToString() {
		return quantidadeToString;
	}

	public void setQuantidadeToString(String quantidadeToString) {
		this.quantidadeToString = quantidadeToString;
	}

	public String getValorToString() {
		return valorToString;
	}

	public void setValorToString(String valorToString) {
		this.valorToString = valorToString;
	}

	public String getPorcetagemLucroToString() {
		return porcetagemLucroToString;
	}

	public void setPorcetagemLucroToString(String porcetagemLucroToString) {
		this.porcetagemLucroToString = porcetagemLucroToString;
	}

	public String getValorFinalToString() {
		return valorFinalToString;
	}

	public void setValorFinalToString(String valorFinalToString) {
		this.valorFinalToString = valorFinalToString;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

}
